package cn.dida.service;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import cn.dida.model.Pageable;
import cn.dida.model.SalesNewMan;
import cn.dida.model.Salesman;
import cn.dida.model.SalesmanSaleHistory;

/**
 * 促销员管理 接口
 * @author weiwei
 */
public interface SalesmanService {
    Pageable<SalesNewMan> querySalesman(Integer companyId, String keyword,String branchkeyword, String adname,  Integer state, int page);
    /**
     * 促销员列表（数据导出用）
     * @param companyId 所属公司id
     * @param keyword 查询条件
     * @param state 促销员状态：1正常，2注销
     * @return List<Salesman> 促销员列表
     * @date 2016-12-08 11:45
     * */
    List<SalesNewMan> querySalesmanForExport(Integer companyId, String keyword, String branchkeyword, String adname, Integer state);

    /**
     * 促销员列表
     * @param companyId 公司id
     * @param state 促销员状态：1正常，2注销
     * @return List<Salesman> 促销员列表数据
     */
    List<Salesman> querySalesman(Integer companyId, Integer state);
    /**
     * 新增促销员
     * @param salesman 促销员实体类
     * @return Boolean true操作成功，false操作失败
     */
    Boolean insertSalesman(Salesman salesMan);
    /**
     * 获取促销员信息
     * @param companyId 公司id
     * @param id 促销员id
     * @return Salesman 促销员信息
     */
    SalesNewMan getSalesman(Integer companyId, Integer id);
    /**
     * 获取促销员信息
     * @param companyId 公司id
     * @param phone 促销员电话
     * @return Salesman 促销员信息
     */
    Salesman getSalesmanByPhone(Integer companyId, String phone);
    /**
     * 更新促销员
     * @param salesman 促销员实体类
     * @return Boolean true操作成功，false操作失败
     */
    Boolean updateSalesman(SalesNewMan salesMan);
    /**
     * 删除促销员
     * @param companyId 公司id
     * @param id 促销员id
     * @return Boolean true操作成功，false操作失败
     */
    Boolean deleteSalesman(Integer companyId, Integer id);
    /**
     * 销售记录列表
     * @param salesmanId 促销员id
     * @param keyword 查询条件
     * @param timeLimitStart 扫码开始时间
     * @param timeLimitEnd 扫码结束时间
     * @param page 分页游标
     * @return Pageable<SalesmanSaleHistory> 销售记录分页列表
     */
    Pageable<SalesmanSaleHistory> querySaleHistory(Integer salesmanId, String keyword, Long timeLimitStart, Long timeLimitEnd, int page);
    /**
     * 促销员销售记录列表（数据导出用）
     * @param salesmanId 促销员id
     * @param keyword 查询条件
     * @param timeLimitStart 扫码开始时间
     * @param timeLimitEnd 扫码结束时间
     * @return List<SalesmanSaleHistory> 促销员销售记录列表
     * @date 2016-12-08 13:51
     * */
    List<SalesmanSaleHistory> querySaleHistoryForExport(Integer salesmanId, String keyword, Long timeLimitStart, Long timeLimitEnd);
    
    
    /**
     * 查询手动支付列表
     * @author kelan
     * @date 2017年4月26日
     * @param keyword
     * @param timeLimitStart
     * @param timeLimitEnd
     * @param page
     * @return
     */
    Pageable<Map<String,Object>> querysalepaymentyList(Integer companyid, String keyword, Long timeLimitStart,
			Long timeLimitEnd, int page);
    
    /**
     * 手动支付详情列表
     * @author kelan
     * @date 2017年4月27日
     * @param companyid
     * @param price
     * @param product_id
     * @return
     */
    public Pageable<Map<String, Object>> querysalepaymentydetailList(Integer companyid,  String keyword, String companyname,String price, Integer product_id,Integer page);
   
    /**
     * 支付逻辑
     * @author kelan
     * @date 2017年4月27日
     * @param js
     * @return
     */
    public Boolean PaymentlistSave(JSONArray js,String product_id);
    
	/**
	 * 已支付列表
	 * @author kelan
	 * @date 2017年4月28日
	 * @param companyId
	 * @param keyword
	 * @param timeLimitStart
	 * @param timeLimitEnd
	 * @param page
	 * @return
	 */
	public Pageable<Map<String, Object>> querysalepayoffmentyList(Integer companyId, String keyword, Long timeLimitStart,
			Long timeLimitEnd, Integer page);
	
	/**
	 * 已支付详情列表
	 * @author kelan
	 * @date 2017年4月28日
	 * @param companyId
	 * @param keyword
	 * @param companyname
	 * @param price
	 * @param product_id
	 * @param page
	 * @return
	 */
	public Pageable<Map<String, Object>> querysalepaymentyoffdetailList(Integer companyId, String keyword, String companyname,
			Integer product_id,String c_time, Integer page);
	
	/**
	 * 更新促销员扫码记录和促销员支付记录的PaymentState
	 * @author kelan
	 * @date 2017年5月4日
	 * @param jo
	 * @return
	 */
	public Boolean updatePaymentState(JSONObject jo);
	
	
	/**
	 * 促销员未支付数据导出
	 * @author kelan
	 * @date 2017年5月5日
	 * @param companyId
	 * @param keyword
	 * @param timeLimitStart
	 * @param timeLimitEnd
	 * @return
	 */
	public List<Map<String, Object>> querySalepaymentyExport(Integer companyId, String keyword, Long timeLimitStart,
			Long timeLimitEnd);
	
	/**
	 * 促销员已支付数据导出
	 * @author kelan
	 * @date 2017年5月5日
	 * @param companyId
	 * @param keyword
	 * @param timeLimitStart
	 * @param timeLimitEnd
	 * @return
	 */
	public List<Map<String, Object>> querySalepaymentOffExport(Integer companyId, String keyword, Long timeLimitStart,
			Long timeLimitEnd);
	
	
}
